package com.iflytek.iot.hadoop.dfs.service;

import com.iflytek.iot.hadoop.dfs.config.HdfsProperties;
import org.apache.hadoop.conf.Configuration;

import java.util.List;

/**
 * hadoop hdfs文件管理操作接口
 *
 * @author yu 2019/11/28.
 */
public interface HdfsService {

    /**
     * hadoop dfs配置
     *
     * @param configuration 配置类
     */
    void setConfiguration(Configuration configuration);

    /**
     * hadoop dfs属性
     *
     * @param hdfsProperties 属性类
     */
    void setHdfsProperties(HdfsProperties hdfsProperties);

    /**
     * 创建文件
     * @param filePath 文件路径
     * @param contents 文件内容
     * @return
     */
    String createFile(String filePath, String contents);

    /**
     * 在hdfs上删除文件
     *
     * @param fileName
     * @return
     */
    boolean delete(String fileName);

    /**
     * 创建hdfs dir
     *
     * @param hdfsDir 文件目录
     * @return
     */
    boolean createDir(String hdfsDir);

    /**
     * @param path 文件路径
     * @return list of file
     */
    List<String> listFile(String path);

    /**
     * 下载文件
     * @param remoteFile 文件名称
     * @return String fileContent
     */
    String download(String remoteFile);

    /**
     * 在hdfs上创建可追加的文本内容的文件
     * @param filePath 文件路径
     * @param contents 文件内容
     */
    boolean createFileAppendable(String filePath, String contents);
}
